package com.etalk.crm.dao;

import com.etalk.crm.pojo.AchievementManagement;
import com.etalk.crm.pojo.NewMainBean;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Auther: James
 * @Date: 2018/12/28 10:08
 * @Description: 课程顾问首页工作台
 */
@Mapper
public interface CCNewMainMapper {
    /**
     * 课程 cc ssc 首页 预约与回访 提醒
     * @param ccId
     * @param searchDate
     * @return
     */
    List<NewMainBean> selectTrackRemindByUserId(@Param("ccId")Integer ccId, @Param("searchDate")String searchDate,@Param("sscId")Integer sscId,@Param("bccId")Integer bccId);

    
    /*
     * @Author James
     * @Description 根据cc ssc 查询关联学生订单的60天到期信息或课时剩30以下
     * @Date 11:26 2018/12/28
     * @Param 
     * @return 
     **/
    List<NewMainBean>searchStuOrderInfoByUserId(@Param("ccId")int ccId,@Param("sscId")Integer sscId);

    /*
     * @Author James
     * @Description 课程顾问demo课已约未上学员
     * @Date 11:45 2018/12/28
     * @Param
     * @return
     **/
    List<NewMainBean>demoMissedListByCC(@Param("ccId")int ccId, @Param("searchDate")String searchDate);
    
    /*
     * @Author James
     * @Description 查询首页课程顾问下潜在学员和待约学员
     * @Date 11:47 2018/12/28
     * @Param 
     * @return 
     **/
    List<NewMainBean>selectMainTipPotentialByCCId(@Param("ccId")int ccId,@Param("state")Integer state);

    /**
     * 查询首页课程顾问面板已上可跟进状态demo课程时间
     * @param ccId 课程顾问id
     * @param state 客户属性id
     * @return
     */
    List<NewMainBean> selectMainTipPotentialDemoTimeByCcId(@Param("ccId")Integer ccId,@Param("state") Integer state);

    /**
     * 根据客户属性id查询父类
     * @param id 客户属性id
     * @return 父类id
     */
    Integer selectParentIdById(@Param("id") Integer id);
    
    /*
     * @Author James
     * @Description 查询首页渠道为RL(推荐)的所有学员(Ref Leads)
     * @Date 14:49 2018/12/28
     * @Param 
     * @return 
     **/
    List<NewMainBean>selectMainTipRelLeadsByCC(@Param("ccId")int ccId);

    /*
     * @Author James
     * @Description 查询首页新学员(第一次购买套餐在一个月31天内)
     * @Date 14:51 2018/12/28
     * @Param
     * @return
     **/
    List<NewMainBean>selectMainTipNewStudentByCCId(@Param("ccId")int ccId);

   /*
     * @Author James
     * @Description 查询首页 cc  oc课课后回访
     * @Date 14:51 2018/12/28
     * @Param
     * @return
     **/
    List<NewMainBean> selectOcInfoByCC(@Param("ccId")int ccId);

    /**
     * 查询cc名下学员被投诉列表
     * @param ccId cc id
     * @return
     */
    List<NewMainBean> selectTeacherRank(@Param("ccId") int ccId,@Param("listSearchKey") List<String> listSearchKey);

    /**
     * @Author James
     * @Description 学生旷课或者取消上课记录(首页未正常完成课程学员面板)
     * @Date 10:59 2018/12/29
     * @Param ccId ccId
     * @return
     **/
    List<NewMainBean> selectLessonState(@Param("ccId") int ccId);

    /**
     * 学管师学员上完中教课提醒家长会课程
     * @param ccId 课程顾问id
     * @param finishId 是否完成家长会
     * @return
     */
    List<NewMainBean> selectBookingLctClassByCcId(@Param("ccId") int ccId,@Param("finishId")Integer finishId,@Param("yearMonth") int yearMonth);

    /**
     * 查询未设置动态提醒的学员名单
     * @param ccId cc id
     * @return
     */
    List<NewMainBean> selectNoReminderTimeStudentList(@Param("ccId") int ccId);

    /**
     * 查询订单总课数少于40课时的学员名单
     * @param ccId cc id
     * @return
     */
    List<NewMainBean> selectSurplusClassLessNUmList(@Param("ccId") int ccId);

    /**
     * 老学员跟踪记录
     * @param ccId
     * @return
     */
    List<NewMainBean> selectOcOldStudent(@Param("ccId") int ccId,@Param("followDays")Integer followDays);

    /**
     * 查询自动约课失败记录
     * @param ccId cc id
     * @return
     */
    List<NewMainBean> selectAutoBookedFailList(@Param("ccId") int ccId);

    /**
     * 学员上课表现3星及以下列表
     * @param ccId cc id
     * @return
     */
    List<NewMainBean> selectClassAttitudeList(@Param("ccId") int ccId);

    /**
     * 学员上周、本周、下周课程数少于3节记录
     * @param ccId cc id
     * @param weekId 上周(-1),本周(0),下周(1)
     * @return
     */
    List<NewMainBean> selectWeekClassInfoList(@Param("ccId") int ccId,@Param("weekId") Integer weekId);

    /**
     * 查询cc名下学员当天课程
     * @param ccId cc id
     * @return
     */
    List<NewMainBean> selectBookedCourseTodayList(@Param("ccId") int ccId,@Param("classState")Integer classState);

    /**
     * 查询最近的一次收集成绩的年份，学期，考试类型
     * @return
     */
    AchievementManagement selectNewScoreInfo();

    /**
     * 查询cc名下学员最近两次成绩
     * @param year 年份
     * @param term 学期，1上学期，2下学期
     * @param testTime 1期中，2期末
     * @param ccId cc id
     * @return
     */
    List<NewMainBean> selectLastTwoScoreList(@Param("year") Integer year,@Param("term") Integer term,@Param("testTime")Integer testTime,@Param("ccId") int ccId);
}
